package com.yonyougov.devops.cruxcisupport.roleenv;

import com.yonyougov.devops.cruxcisupport.roleenv.dto.AddMulRoleEnvRequestDto;
import com.yonyougov.devops.cruxcisupport.roleenv.vo.FindEnvIdsByRoleIdsDto;
import com.yonyougov.devops.cruxcisupport.roleenv.vo.RoleEnvPageByRoleIdDto;
import com.yonyougov.devops.cruxcisupport.roleenv.vo.RoleEnvPageByRoleIdVo;
import com.yonyougov.devops.fwc.core.entity.Pagination;
import com.yonyougov.devops.fwc.core.service.BaseService;

import java.math.BigInteger;
import java.util.List;

/**
 * t_role_env服务
 */
public interface RoleEnvService extends BaseService<RoleEnvEntity, BigInteger> {

    //<!--用户自定义代码开始-->
    void addBatch(List<RoleEnvEntity> params);

    /**
     * 角色取消关联应用
     *
     * @param roleEnvIds
     */
    void deleteMulRoleEnvByPrimaryKey(List<BigInteger> roleEnvIds);

    /**
     * 查询角色和环境的关联
     * 根据角色id查询,根据环境名称筛选
     *
     * @param roleEnvPageByRoleIdDto [com.yonyougov.devops.cruxcisupport.roleenv.vo.RoleEnvPageByRoleIdDto]
     * @return [com.yonyougov.devops.fwc.core.entity.Pagination]
     */
    Pagination<RoleEnvPageByRoleIdVo> findRoleEnvPageByRoleId(RoleEnvPageByRoleIdDto roleEnvPageByRoleIdDto);

    /**
     * 查环境ids
     * 条件: 角色ids
     *
     * @param findEnvIdsByRoleIdsDto [com.yonyougov.devops.cruxcisupport.roleenv.vo.FindEnvIdsByRoleIdsDto]
     * @return java.util.List
     */
    List<BigInteger> getEnvIdsByRoleIds(FindEnvIdsByRoleIdsDto findEnvIdsByRoleIdsDto);

    /**
     * 当前用户能看到的环境
     * 条件: 权限过滤
     *
     * @return java.util.List
     * @throws Exception
     */
    List<BigInteger> getCurrentUserEnvIds() throws Exception;

    /**
     * 角色关联环境
     *
     * @param addMulRoleEnvRequestDto [com.yonyougov.devops.cruxcisupport.roleenv.dto.AddMulRoleEnvRequestDto]
     */
    void addMulRoleEnv(AddMulRoleEnvRequestDto addMulRoleEnvRequestDto);
    //<!--用户自定义代码结束-->
}
